use rust_practice::search::number_of_closed_islands::Solution;

#[test]
fn closed_island() {
    // 示例 1：
    // 输入：grid = [[1,1,1,1,1,1,1,0],[1,0,0,0,0,1,1,0],[1,0,1,0,1,1,1,0],[1,0,0,0,0,1,0,1],[1,1,1,1,1,1,1,0]]
    // 输出：2
    // 解释：
    // 灰色区域的岛屿是封闭岛屿，因为这座岛屿完全被水域包围（即被 1 区域包围）。
    // 示例 2：
    // 输入：grid = [[0,0,1,0,0],[0,1,0,1,0],[0,1,1,1,0]]
    // 输出：1
    let grid = vec![
        vec![1, 1, 1, 1, 1, 1, 1, 0],
        vec![1, 0, 0, 0, 0, 1, 1, 0],
        vec![1, 0, 1, 0, 1, 1, 1, 0],
        vec![1, 0, 0, 0, 0, 1, 0, 1],
        vec![1, 1, 1, 1, 1, 1, 1, 0],
    ];
    assert_eq!(Solution::closed_island(grid), 2);

    // 示例 3：
    // 输入：grid = [[1,1,1,1,1,1,1],
    //              [1,0,0,0,0,0,1],
    //              [1,0,1,1,1,0,1],
    //              [1,0,1,0,1,0,1],
    //              [1,0,1,1,1,0,1],
    //              [1,0,0,0,0,0,1],
    //              [1,1,1,1,1,1,1]]
    // 输出：2
    let grid = vec![
        vec![1, 1, 1, 1, 1, 1, 1],
        vec![1, 0, 0, 0, 0, 0, 1],
        vec![1, 0, 1, 1, 1, 0, 1],
        vec![1, 0, 1, 0, 1, 0, 1],
        vec![1, 0, 1, 1, 1, 0, 1],
        vec![1, 0, 0, 0, 0, 0, 1],
        vec![1, 1, 1, 1, 1, 1, 1],
    ];
    assert_eq!(Solution::closed_island(grid), 2);
}
